<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>黑客帝国代码雨特效</title>
    <meta name="keywords" content="canvas动画, 手机微信网站特效, css3动画, html5特效, 网页特效"/>
    <meta name="description"
          content="A5源码库-专注于HTML5、CSS3、js、jQuery、手机移动端等网页特效的手机与分享。特效库始终坚持：无会员、无积分、无限制的“三无原则”，所有的资源都免费提供广大童鞋下载学习和使用。"/>
    <style>
        * {
            padding: 0;
            margin: 0
        }

        html {
            overflow: hidden
        }
    </style>
</head>
<body>


<canvas id="canvas" style="background:#111"></canvas>

<script type="text/javascript">

    window.onload = function () {
        //获取画布对象
        let canvas = document.getElementById("canvas");
        //获取画布的上下文
        let context = canvas.getContext("2d");
        //获取浏览器屏幕的宽度和高度
        let W = window.innerWidth;
        let H = window.innerHeight;
        //设置canvas的宽度和高度
        canvas.width = W;
        canvas.height = H;
        //每个文字的字体大小
        let fontSize = 16;
        //计算列
        let colunms = Math.floor(W / fontSize);
        //记录每列文字的y轴坐标
        let drops = [];
        //给每一个文字初始化一个起始点的位置
        for (let i = 0; i < colunms; i++) {
            drops.push(0);
        }

        //运动的文字
        let str = "Debian Ubuntu Redhat Centos";
        //4:fillText(str,x,y);原理就是去更改y的坐标位置
        //绘画的函数
        function draw() {
            context.fillStyle = "rgba(0,0,0,0.05)";
            context.fillRect(0, 0, W, H);
            //给字体设置样式
            context.font = "700 " + fontSize + "px  微软雅黑";
            //给字体添加颜色
            context.fillStyle = "#00cc33";//可以rgb,hsl, 标准色，十六进制颜色
            //写入画布中
            for (let i = 0; i < colunms; i++) {
                let index = Math.floor(Math.random() * str.length);
                let x = i * fontSize;
                let y = drops[i] * fontSize;
                context.fillText(str[index], x, y);
                //如果要改变时间，肯定就是改变每次他的起点
                if (y >= canvas.height && Math.random() > 0.99) {
                    drops[i] = 0;
                }
                drops[i]++;
            }
        }


        draw();
        setInterval(draw, 30);
    };

</script>


</body>
</html>
